Cooperative communications, where different nodes in a network work together to transmit information from a source to a destination, decreases energy expenditure and improves reliability of data transmission in a wireless network. A variety of cooperation schemes have been proposed, such as cooperative beam-forming, distributed space-time codes, amplify and forward signaling, decode and forward signaling, dynamic decode and forward signaling, etc.
Fountain codes, and, in general, rateless codes have recently been shown to be well suited for cooperative relay networks. Rateless code transmission techniques produce encoded symbols of information, such as encoded bits, bytes, or packets, of information. A rateless code is used to transform an original message of n blocks into a message with more than n blocks, such that the original message can be recovered from a subset of the transformed blocks. A fraction of the blocks that are required to recover the message is referred to as the rate, denoted r.
Unlike conventional codes, which generate a finite number of parity bits or blocks, rateless codes generate an infinite number of parity bits or blocks that are transmitted until an acknowledgment is received from a recipient that indicates that the recipient has received enough blocks to recover the original message. Because rateless codes take a finite amount of original information and produce a practically infinite number of encoded blocks for transmission to one or more users, there is no concept of rate or a fixed number of encoded blocks.
With rateless codes, a receiver may recover original information from unordered subsets of one or more rateless code-streams transmitted by multiple sources so long as the total mutual information accumulated marginally exceeds the entropy of the source information, for example. Generally, using rateless codes, a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols, and the original source symbols can be recovered from any subset of the encoded symbols of size equal to or slightly larger than the number of source symbols.
Using rateless coding, encoded symbols may be lost in transmission, however, original information can still be recovered because of redundant transmission of encoded information. Thus, rateless coding is considered a form of error/erasure correction coding because of an ability to preserve information in the presence of losses.